1. Technical Field
The present invention relates in general to the field of data processing systems. More particularly, the present invention relates to controlling the data processing flow in data processing systems. Still more particularly, the present invention relates to a system and method for recovering from a hang condition in a data processing system.
2. Description of the Related Art
One of the greatest challenges of designing multi-processor (MP) data processing systems is to determine how to efficiently synchronize and arbitrate access to resources, such as system memory and cache memory. Sharing resources eliminates the need for a resource or the data or instructions stored therein to be duplicated for each processing unit or other requestor of access to the resource.
As appreciated by those with skill in the art, one common solution utilized to share resources in an MP data processing system involves a blocking algorithm. Typically, a lock is utilized to block a first requestor from accessing shared resource (e.g., a system memory, a cache line, etc.) when a second requestor is accessing the shared resource. When a first requestor is waiting for access to the shared resource, the first requestor (e.g., processor core, processor core masters, cache snoopers, etc.) is described as being in a “hang condition”.
Constantly retrying access requests to a temporarily inaccessible shared resource consumes power and system resources that could otherwise be used to perform useful work. Therefore, there is a need for a system and method for recovering from a hang condition in a data processing system.